{
 "cells": [
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "# 电影时间的直方图",
   "id": "9e895502401604a7"
  },
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-03-06T07:24:24.009138Z",
     "start_time": "2025-03-06T07:24:23.824980Z"
    }
   },
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "file_path = './IMDB-Movie-Data.csv'\n",
    "df = pd.read_csv(file_path)\n",
    "\n",
    "#打印数据信息\n",
    "# print(df)\n",
    "print(df.info())\n",
    "print('*' * 100)\n",
    "print(df.head(1))\n",
    "print('*' * 100)\n",
    "\n",
    "#获取平均评分\n",
    "print(df[\"Rating\"].mean())\n",
    "print('*' * 100)\n",
    "\n",
    "#导演的人数\n",
    "# print(df[\"Director\"].tolist())\n",
    "print(len(df[\"Director\"].tolist()))\n",
    "print('*' * 100)\n",
    "# print(df[\"Director\"].unique())\n",
    "print(len(df[\"Director\"].unique())) #去重后的导演人数\n",
    "print('*' * 100)\n",
    "\n",
    "'''获取演员的人数'''\n",
    "\n",
    "# temp_actors_list = df[\"Actors\"]\n",
    "# print(temp_actors_list.head())\n",
    "temp_actors_list = df[\"Actors\"].str.split(',').tolist()\n",
    "# print(temp_actors_list)\n",
    "actors_list = [i for j in temp_actors_list for i in j]\n",
    "# print(actors_list)\n",
    "actors_num = len(actors_list)\n",
    "print(actors_num)\n",
    "print('*' * 100)\n",
    "\n",
    "'''\n",
    "rating,runtime分布情况\n",
    "选择图形，直方图\n",
    "准备数据\n",
    "'''\n",
    "\n",
    "runtime_data = df[\"Runtime (Minutes)\"].values\n",
    "# print(runtime_data)\n",
    "max_runtime = runtime_data.max()\n",
    "min_runtime = runtime_data.min()\n",
    "# print(max_runtime)\n",
    "# print(min_runtime)\n",
    "\n",
    "'''计算组数'''\n",
    "\n",
    "print(max_runtime - min_runtime)\n",
    "print('*' * 100)\n",
    "num_bin = (max_runtime - min_runtime) // 5\n",
    "\n",
    "'''设置图形的大小'''\n",
    "\n",
    "plt.figure(figsize = (20,8),dpi = 90)\n",
    "#第二个bin参数必须为int或sequence或str，bins代表划分为几个单元\n",
    "plt.hist(runtime_data, bins = int(num_bin))\n",
    "\n",
    "plt.xticks(range(min_runtime,max_runtime+1,5))\n",
    "\n",
    "plt.show()"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1000 entries, 0 to 999\n",
      "Data columns (total 12 columns):\n",
      " #   Column              Non-Null Count  Dtype  \n",
      "---  ------              --------------  -----  \n",
      " 0   Rank                1000 non-null   int64  \n",
      " 1   Title               1000 non-null   object \n",
      " 2   Genre               1000 non-null   object \n",
      " 3   Description         1000 non-null   object \n",
      " 4   Director            1000 non-null   object \n",
      " 5   Actors              1000 non-null   object \n",
      " 6   Year                1000 non-null   int64  \n",
      " 7   Runtime (Minutes)   1000 non-null   int64  \n",
      " 8   Rating              1000 non-null   float64\n",
      " 9   Votes               1000 non-null   int64  \n",
      " 10  Revenue (Millions)  872 non-null    float64\n",
      " 11  Metascore           936 non-null    float64\n",
      "dtypes: float64(3), int64(4), object(5)\n",
      "memory usage: 93.9+ KB\n",
      "None\n",
      "****************************************************************************************************\n",
      "   Rank                    Title                    Genre  \\\n",
      "0     1  Guardians of the Galaxy  Action,Adventure,Sci-Fi   \n",
      "\n",
      "                                         Description    Director  \\\n",
      "0  A group of intergalactic criminals are forced ...  James Gunn   \n",
      "\n",
      "                                              Actors  Year  Runtime (Minutes)  \\\n",
      "0  Chris Pratt, Vin Diesel, Bradley Cooper, Zoe S...  2014                121   \n",
      "\n",
      "   Rating   Votes  Revenue (Millions)  Metascore  \n",
      "0     8.1  757074              333.13       76.0  \n",
      "****************************************************************************************************\n",
      "6.723199999999999\n",
      "****************************************************************************************************\n",
      "1000\n",
      "****************************************************************************************************\n",
      "644\n",
      "****************************************************************************************************\n",
      "3999\n",
      "****************************************************************************************************\n",
      "125\n",
      "****************************************************************************************************\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1800x720 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABaUAAAJSCAYAAADTdKkQAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAN1wAADdcBQiibeAAALfJJREFUeJzt3QuQVfV9B/D/2kXCGxSDEBBMfMRJUcjQzDik2lakkzBWJ1FRZIhG0BkFE50m2SgoyqNEJ5NOwY5tgk5brWactPigtdE2sUImJjUFEsxQNEFGfJCI8hAR0dv5n5ldWZRddC+/Pefu5zNz2Lvn3N3z//G/5z6++z//01Sr1WoJAAAAAAACHBGxEwAAAAAAyITSAAAAAACEEUoDAAAAABBGKA0AAAAAQBihNAAAAAAAYYTSAAAAAACEEUoDAAAAABBGKA0AAAAAQJjmVBFNTU3d3QQAAAAAAA5BrVarfijdWSEAAAAAAJR/gLHpOwAAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMI0x+0KACiDMS0rU6PYtGRKdzcBAACAD8hIaQAAAAAAwgilAQAAAAAII5QGAAAAACCMUBoAAAAAgPKF0suWLUsTJkxIvXv3Tuedd17b+q1bt6ZLLrkkjRw5Mg0cODCNHz8+Pfjgg+1+9oUXXkif//znU79+/dJxxx2Xvvvd79a3CgAAAAAAGiuUHjFiRJo7d26aNWtWu/W7du0qguif/vSn6bXXXku33HJLuvjii9PTTz/ddp/8/bHHHlsE2Pfff3/62te+lh5//PH6VgIAAAAAQOk11Wq12gf5gfnz56c1a9akFStWHPQ+n/70p9Ps2bPTl7/85fTss8+mk046qRgtPWzYsGL71VdfXYTZ//AP/3DoDW1qSh+wqQDA+xjTsjI1ik1LpnR3EwAAAPiAWW7d55TOo6F//etfp1NPPbX4ft26dWn48OFtgXQ2bty4Yj0AAAAAAD1LXUPpvXv3posuuihdeOGFxfzTWR4RPXjw4Hb3y9/v3Lmz0xHZOVFvXQAAAAAAqL4j6hlIn3/++alv377tLmTYv3//tH379nb3zd8PGDCg01A6D/FuXQAAAAAAqL4j6hVIX3DBBcXXH/zgB+nII49s25an8cjzSedpPVrlOanHjh1bj10DAAAAANCIofS+ffvSnj17iq/vvPNOcTuH0G+99VYxXcfrr79eXPywd+/e7X7uE5/4RJo4cWK6/vrr0+7du9PPfvazdM8996TLL7/8cNQDAAAAAEAjhNILFy5Mffr0SYsWLUoPPfRQcXvy5MnpJz/5SXrggQfS6tWr09ChQ4vpOvKyePHitp+9995705YtW9IxxxyTvvjFL6Zbb701nXnmmYerJgAAAAAASqqpVpEJm/PFDivSVAAotTEtK1Oj2LRkSnc3AQAAgA+Y5dbtQocAAAAAANAZoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGa43YFQE8zpmVlahSblkzp7iYAAABAQzBSGgAAAACAMEJpAAAAAADCCKUBAAAAAAhjTmkAoLIaad7yRmH+dQAAoDNGSgMAAAAAEEYoDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEEYoDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEEYoDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEEYoDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEEYoDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEKY5blcAUF1jWlZ2dxMAAACgZ42UXrZsWZowYULq3bt3Ou+889pt27FjR5o2bVoaOHBgGjZsWFqwYMEH2g4AAAAAQM9wyCOlR4wYkebOnZsee+yx9Pzzz7fbNmfOnLRt27a0efPmtHXr1jRp0qQ0evToNGPGjEPaDgAAAABAz3DIofQXvvCF4uuaNWvahdK7d+9O9913X1q9enUaPHhwseQQevny5UXo3Nl2AAAAAAB6ji5f6HDDhg1p7969ady4cW3r8u1169Yd0vaDmT9/fmpqampbAAAAAACovi6H0rt27Ur9+vVLzc3vDrrOo6F37tx5SNs7CqVrtVrbAgAAAABA9XU5lO7fv38xRce+ffva1m3fvj0NGDDgkLYDAAAAANBzdDmUPvnkk1OvXr3S2rVr29bleafHjh17SNsBAAAAAOg5DjmUziOd9+zZU3x95513itt5rui+ffumqVOnpnnz5hUjoDdu3JiWLl2aZs6cWfxcZ9sBAAAAAOg5DjmUXrhwYerTp09atGhReuihh4rbkydPLrYtW7YsDRo0KI0cOTJNnDgxXX755WnGjBltP9vZdgAAAAAAeoamWkWuItjU1OSChwAVM6ZlZXc3AQi2acmU7m4CAABQ8iy3y3NKAwAAAADAoRJKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhGmO2xUAh2pMy8rubgIAAADAYWGkNAAAAAAAYYTSAAAAAACEEUoDAAAAABBGKA0AAAAAQBihNAAAAAAAYYTSAAAAAACEEUoDAAAAABBGKA0AAAAAQBihNAAAAAAAYYTSAAAAAACEEUoDAAAAABBGKA0AAAAAQBihNAAAAAAAYYTSAAAAAACEEUoDAAAAABBGKA0AAAAAQBihNAAAAAAAYYTSAAAAAACEEUoDAAAAABBGKA0AAAAAQBihNAAAAAAAYYTSAAAAAACEEUoDAAAAABBGKA0AAAAAQBihNAAAAAAAYYTSAAAAAACEEUoDAAAAABBGKA0AAAAAQBihNAAAAAAAYYTSAAAAAABUM5TesmVLOu+889LRRx+dhg4dmi688ML0u9/9rtj21ltvpdmzZ6chQ4ako446Ks2ZMyft27evnrsHAAAAAKAnhdJXX3118fW5555Lv/3tb9OePXvSNddcU6xbuHBhWrVqVXr66afT+vXr0xNPPJEWL15cz90DAAAAANCTQunf/OY3xejo/v37pwEDBqSpU6emX/7yl8W2O++8M82dOzcNHz68WG644Ya0fPnyeu4eAAAAAICeFEpfd9116f7770/bt29Pr732Wrr33nvTOeeck1599dX0/PPPp3HjxrXdN9/evHlzcV8AAAAAAHqGuobSEydOTFu3bm2bNzqH0d/85jfTrl27iu2DBw9uu2/r7Z07d77v75o/f35qampqWwAAAAAAqL66hdLvvPNOOvvss4tgOofQecm3J0+eXEznke0/Krr1dp7m42ChdK1Wa1sAAAAAAKi+uoXS27ZtKy5wmC9s2Ldv32KZM2dOevLJJ9Pbb7+dRo4cmdasWdN2/3x71KhRadCgQfVqAgAAAAAAPSWUHjp0aDrhhBPS7bffnvbs2VMs+XYOo/O2yy67LC1atCi99NJLxbJ48eI0c+bMeu0eAAAAAIAKaK7nL3vggQfStddemz72sY8V03mMHz8+Pfjgg8W2efPmpVdeeSWdcsopxffTp09P119/fT13DwAAAABAyTXVKjJhc77YYUWaCtBlY1pWdncTAD6UTUumdHcTAACAkme5dZu+AwAAAAAAOiOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgTHPcrgAAaHRjWlamRrFpyZTubgIAADQkI6UBAAAAAAgjlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAoLqh9IMPPpjGjRuX+vXrl0aMGJHuuOOOYv2OHTvStGnT0sCBA9OwYcPSggUL6r1rAAAAAABKrrmev+yRRx5JV111Vbr77rvTH//xHxdB9Msvv1xsmzNnTtq2bVvavHlz2rp1a5o0aVIaPXp0mjFjRj2bAAAAAABAiTXVarVavX7ZH/3RH6VZs2alK664ot363bt3pyFDhqTVq1enCRMmFOtuu+229PDDD6fHH3/80Bra1JTq2FSAUhvTsrK7mwDQ421aMqW7mwAAAJXUWZZbt+k7Xn/99fTUU0+lLVu2pJNOOikde+yx6YILLkgvvvhi2rBhQ9q7d28xrUerfHvdunX12j0AAAAAABVQt1D61VdfLdLvFStWpEcffTQ988wzqXfv3mn69Olp165dxRzTzc3vzhYyePDgtHPnzoP+vvnz5xeJeusCAAAAAED11S2U7t+/f/H1mmuuKeaKzt/ffPPN6Uc/+lE64ogjiik89u3b13b/7du3pwEDBnQYSueQu3UBAAAAAKD66hZK55HPxx133PtuGzt2bOrVq1dau3Zt27o1a9YU6wEAAAAA6DnqFkpn+QKHS5cuLeaVfuONN9Itt9ySzjrrrDRw4MA0derUNG/evGKE9MaNG4v7zZw5s567BwAAAACgJ4XSLS0tRQh92mmnpVGjRhVTdvzTP/1TsW3ZsmVp0KBBaeTIkWnixInp8ssvTzNmzKjn7gEAAAAAKLmmWkUmbM4XO6xIUwG6bEzLyu5uAkCPt2nJlO5uAgAAVFJnWW5dR0oDAAAAAEBHhNIAAAAAAIRpjtsVAABUR6NMpWQaEgAAysZIaQAAAAAAwgilAQAAAAAII5QGAAAAACCMUBoAAAAAgDBCaQAAAAAAwgilAQAAAAAII5QGAAAAACCMUBoAAAAAgDBCaQAAAAAAwgilAQAAAAAII5QGAAAAACCMUBoAAAAAgDBCaQAAAAAAwgilAQAAAAAII5QGAAAAACCMUBoAAAAAgDBCaQAAAAAAwgilAQAAAAAII5QGAAAAACCMUBoAAAAAgDBCaQAAAAAAwgilAQAAAAAII5QGAAAAACCMUBoAAAAAgDBCaQAAAAAAwjTH7Qrg8BrTsrK7mwAAAABAJ4yUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgTHPcrgAAgGhjWlamRrFpyZTubgIAAHVgpDQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYoTQAAAAAANUOpd944410wgknpMGDB7et27FjR5o2bVoaOHBgGjZsWFqwYMHh2DUAAAAAACXWfDh+6Y033phGjx6dfv/737etmzNnTtq2bVvavHlz2rp1a5o0aVJxnxkzZhyOJgAAAAAA0BNGSj/11FPpkUceSd/4xjfa1u3evTvdd999aeHChcXo6ZNOOqkIqZcvX17v3QMAAAAA0FNC6X379qVZs2al22+/PR155JFt6zds2JD27t2bxo0b17Yu3163bl09dw8AAAAAQE8KpW+77bY0fvz4dMYZZ7Rbv2vXrtSvX7/U3PzubCF5xPTOnTsP+rvmz5+fmpqa2hYAAAAAAKqvbqH0M888k+64444imD5Q//79iyk88kjqVtu3b08DBgzoMJSu1WptCwAAAAAA1Ve3UHrVqlXp5ZdfLuaLHjp0aDr33HPTjh07itv5a69evdLatWvb7r9mzZo0duzYeu0eAAAAAICeFEpfeOGFxWjpHDbn5Xvf+14xEjrfPv3009PUqVPTvHnzihHSGzduTEuXLk0zZ86s1+4BAAAAAKiAdyd57qK+ffsWS6tjjjmmmAt65MiRxffLli1LV155ZfF9nz590uzZs9OMGTPqtXsAAAAAACqgqVaRCZtzwF2RpgLdZEzLyu5uAgBwGG1aMqW7mwAAQB2y3LpN3wEAAAAAAJ0RSgMAAAAAEEYoDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEEYoDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEEYoDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEEYoDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEEYoDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEEYoDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEEYoDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEEYoDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEEYoDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEEYoDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEKY5blcAAAAf3piWlalRbFoypbubAADQbYyUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACNMctyugjMa0rOzuJgAAAADQgxgpDQAAAABAGKE0AAAAAABhhNIAAAAAAIQRSgMAAAAAEMaFDgEAAII10sWmNy2Z0t1NAAAqxkhpAAAAAADCCKUBAAAAAAgjlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAIIxQGgAAAACA6oXSb775Zpo1a1Y6/vjj04ABA9InP/nJdOedd7Zt37FjR5o2bVoaOHBgGjZsWFqwYEG9dg0AAAAAQEU01+sX7du3Lw0fPjw99thj6eMf/3h68skn0+c+97k0cuTINHny5DRnzpy0bdu2tHnz5rR169Y0adKkNHr06DRjxox6NQEAAAAAgJJrqtVqtcP1y7/whS+kP/zDP0wtLS1pyJAhafXq1WnChAnFtttuuy09/PDD6fHHHz+0hjY1pcPYVOixxrSs7O4mAABQYZuWTOnuJgAAJdNZlnvY5pTes2dP+tnPfpZOPfXUtGHDhrR37940bty4tu359rp16w7X7gEAAAAAKKHDEkrnFHzmzJnpxBNPLEZL79q1K/Xr1y81N787W8jgwYPTzp07D/o75s+fXyTqrQsAAAAAANV3xOEIpK+66qpidPSKFSvSEUcckfr37592795dzDvdavv27cUFETsKpfPval0AAAAAAKi+uobSOTy++uqri4sc/vCHP0yDBg0q1p988smpV69eae3atW33XbNmTRo7dmw9dw8AAAAAQE8KpWfPnl1czPDRRx8tLmzYqm/fvmnq1Klp3rx5xQjpjRs3pqVLlxZTfAAAAAAA0HM01eo0N8Zzzz2XxowZk3r37t1u7ujp06enO+64I+3YsSNdeeWV6eGHH059+vQpAuwbb7yxbldsBD6cMS0ru7sJAADQ7TYtmdLdTQCAhtFZlvtuetxFo0eP7nBHAwcOTPfee2+9dgcAAAAAQAXV/UKHAAAAAABwMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAIExz3K4AAAAADt2YlpWpUWxaMqW7mwBQGkZKAwAAAAAQRigNAAAAAEAYoTQAAAAAAGHMKQ0AAECPZ+5iAIhjpDQAAAAAAGGE0gAAAAAAhBFKAwAAAAAQRigNAAAAAEAYFzoEAACABtJIF20EoDEZKQ0AAAAAQBihNAAAAAAAYYTSAAAAAACEEUoDAAAAABBGKA0AAAAAQBihNAAAAAAAYYTSAAAAAACEEUoDAAAAABBGKA0AAAAAQBihNAAAAAAAYYTSAAAAAACEEUoDAAAAABBGKA0AAAAAQBihNAAAAAAAYYTSAAAAAACEEUoDAAAAABBGKA0AAAAAQBihNAAAAAAAYYTSAAAAAACEEUoDAAAAABBGKA0AAAAAQBihNAAAAAAAYYTSAAAAAACEEUoDAAAAABBGKA0AAAAAQJjmuF0BAAAA9ExjWlamRrBpyZTubgLQAIyUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMIIpQEAAAAACCOUBgAAAAAgjFAaAAAAAIAwQmkAAAAAAMI0x+0KAAAAAMphTMvK1Cg2LZnS3U2AD8RIaQAAAAAAwgilAQAAAAAII5QGAAAAACCMUBoAAAAAgDAudEioRrqIAAAAAAD100i5kYtPdsxIaQAAAAAAwgilAQAAAAAII5QGAAAAAKAx55R+66230rXXXpvuueee1NTUlC655JL0ne98JzU3m9q6p8ynAwAAAFSXjAKo3EjphQsXplWrVqWnn346rV+/Pj3xxBNp8eLFkU0AAAAAAKCnhNJ33nlnmjt3bho+fHix3HDDDWn58uWRTQAAAAAAoCeE0q+++mp6/vnn07hx49rW5dubN29O27dvj2oGAAAAAADdKGwy5127dhVfBw8e3Lau9fbOnTvToEGD2t1//vz56eabb263Ls9DDQAAAAC8q+lb3d0CDqRPOtZUq9VqKWik9FFHHZWeeeaZ9IlPfKJYl2+feOKJ6bXXXntPKE37MD6omw67RqmlUerI1FJOjVJLo9SRqaWcGqWWRqkjU0v5NEodmVrKqVFqaZQ6MrWUU6PU0ih1ZGopn0apo9FqqfT0HUOGDEkjR45Ma9asaVuXb48aNUogDQAAAADQQ4Re6PCyyy5LixYtSi+99FKxLF68OM2cOTOyCQAAAAAA9IQ5pbN58+alV155JZ1yyinF99OnT0/XX399ZBMq6aabbkqNolFqaZQ6MrWUU6PU0ih1ZGopp0appVHqyNRSPo1SR6aWcmqUWhqljkwt5dQotTRKHZlayqdR6mi0Wio9pzQAAAAAAIRO3wEAAAAAQM8mlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKVL5sEHH0zjxo1L/fr1SyNGjEh33HFH27bvfe976eSTTy62jRkzJj3wwAOpjPr3799u6dWrVzr11FPbti9btixNmDAh9e7dO5133nmpzDqrpbM+K5MtW7YU/99HH310Gjp0aLrwwgvT7373u8r1SWe1VKlPsmeffTZ97nOfS0OGDEkf+9jH0q233tq2bd68eWns2LGpubk5ffWrX01l1lEdZX/+6ujxv2PHjjRt2rQ0cODANGzYsLRgwYJ228vUR12po2x91FEtnf2fX3HFFUUdRxxxRPrrv/7r1N26Uku+FvVf/dVfFf2R++Wkk05KTz75ZCpbLVu3bk2XXHJJGjlyZPEYGz9+fPE8XNZ+6UodVemT7Pzzz0/Dhw8vajn++OPTwoULS9snXa2lTP1yKO+pXn755XTUUUcV71Wq2ied1VKmPumslj/5kz8p1u//nv+FF14o5Wt9V2sp0+t9Z4+vjtpZtWOlo1qqcqxs3rz5PZ+N8zHxF3/xF6U8VrpSR5mOk84eX08//XQ666yzis9gxx57bHFs7N69u5R90tVaqtQvTz31VPrsZz9bvG/5+Mc/nv7xH/+x3fayPYd1J6F0iTzyyCPpqquuKh6UOUBYv3598cYi+/u///v07W9/O913331p165dxQtVfnIpo9y+/ZdTTjklXXTRRW3bc0g4d+7cNGvWrFR2ndXSUZ+VzdVXX118fe6559Jvf/vbtGfPnnTNNddUrk86q6VKffL2228Xb4A+/elPF2HIf/3XfxUvbv/8z/9cbD/hhBOKcPfAN0lVq6Psz18dPf7nzJmTtm3bVryBfeKJJ9J3v/vddm8qytRHXamjbH3UUS2d/Z+fdtpp6W//9m/TZz7zmVQGXanlhhtuSCtXrkyPPfZY0S+PPvpoOu6441LZasltywHuT3/60/Taa6+lW265JV188cXFh4sy9ktX6qhKn2Q33XRT2rRpU/Fa+PjjjxfPyXfffXcp+6SrtZSpXw7lPdXs2bOLx9qBqtQnndVSpj45lFq+9a1vtXvPn+9fxtf6rtZSptf7jurorJ1VOlY6q6Uqx0pu0/6Pq/y+cvDgwe0+G5fpWOlKHWU6Tjp7fOVBJznczH8g/OUvf5nWrl3bbvBJmfqkq7VUpV/ye8jPf/7zafr06enVV19N9957b/FZbNWqVaV9DutWNUpjwoQJtb/7u797z/p9+/bVhg0bVvuP//iPWtU8+eSTtT/4gz+obdmy5T3bbrrpptq5555bq3ItB+uzMho7dmztnnvuafv+7rvvrn3qU5+qZJ90VEuV+mT9+vXFY+rNN99sWzd//vzamWee2e5+X/rSl2pf+cpXalWso0rPXwc+/l9//fXakUceWfv5z3/etu7WW2+tnXHGGe/52TL10Qeto8x91NFzUmf/5/nx953vfKdW1VpeeeWVWu/evWsbNmyolc2hvFaMHz++tnz58lL3yweto8p9snnz5uJ18sYbbyx1n3yYWsraLwerY8WKFbU/+7M/q911112100477X1/tip9crBaytonB6vlUP+/y/Ra/2FqKevr/YF1fJB2lv1Y6ayWqh0r+/v+979fGzJkSO2NN94o9bHyQeso63FysFoGDBhQW716ddv3CxcurE2ZMqXUffJhaqlSv6xcubI2atSodve59NJLiz4o+3NYdzBSuiRef/31Yoh/npYgn7KTT1e44IIL0osvvpg2bNhQ/LXoF7/4RXGKQj6tNP81Jo8WKbvly5cXp/Tv/xf6qjqwlo76rIyuu+66dP/996ft27cXf73Lf7E755xzUhUdrJaq9ck777zTdtre/uvWrVuXqqSjOqr8/JXbvnfv3nanJOfbVeufzuqoch81sjxaN58OmJ/f8utO7ptvfOMbRV+WXT5j4te//vV7pruqmgPrqGKf5DOH+vbt2zYy7NJLL01VdbBaqtQv+X1Lfg9T5mnF6lFLlfqkVZ4SJk9Dkkd9H3iaddUcrJaqvN5XpZ31qKWKx8r+n43zlFcf+chHUpUdWEfVHn9/+Zd/WRznb7zxRnrppZfSv/7rv1b2M35HtVSpX/Ln4P0/F7euq9pnyChC6ZLIw/rzA3fFihXFKTvPPPNM8QKVh/znU0qyfErP//zP/6Q1a9YUUxZce+21qcxyQJhPrZg5c2aquverpaM+K6OJEycWH7DzHE35jWpu/ze/+c1URQerpWp9kk9Pyi+qN954Y3rzzTeLqUbuvPPOUr64ftg6qvr8leXQI89Xludga5VP79u5c2eqks7qqHIfNbLcL/kY2rhxY/q///u/9N///d/p3//934vTssssf5DOp8Dmuf7zPHtV9X51VLFP8qmh+Tng5z//eZoxY0bxullVB6ulSv3y9a9/vQjTTzzxxFR1HdVSpT7J8ny++doYOfBYsmRJcZp1DkOqqKNaqvJ6X5V21qOWqh0rrfIUirmmqn/Of786qvb4y4Pm8rQQAwYMKK69MGrUqPTlL385VVFHtVSpX04//fQiP8rTWb711ltp9erVxfNw1T7jRxFKl0SeYD/L8+KOHj26+P7mm29OP/rRj1JTU1OxLYdu+aJuecm3H3rooVRmeSRrHtEyZcqU7m7KYamloz7LT0Jlkv8yd/bZZxdhbuv8Wfn25MmTU9V0VEuV+iTLF87MF2f43//93+LigPmv9JdddllxAccq6aiO1j6p2vNXltueL66xb9++diPD8hulKumsjir3USNr7Zf8HJZv59GhX/nKV0rdLznIzReky6+Xed7yqjpYHVXskyxfRCcH6/mYz6OQquz9aqlKv+T5/PMH0zwKsuo6q6UqfbJ/gDBo0KDi/cyf//mfpyuvvDJ9//vfT1XUUS1Veb2vSjvrUUvVjpVWd911VzESP8+LW2XvV0eVHn95QNakSZOKEcP5vX4ObvNAlLIOyOpKLVXql/wZOLcrX/8in7nd0tJSyc/4UYTSJZFHrR3sggb5tNEqnhaTr4z6pS99qd3ovKp6v1o66rMDT9fobvlJPf8lOIe1+UN2XvLIiXxxgN///vepSjqqJYduVemTVp/61KfSD3/4w6If8l9880jjM888M1XNwerIo6ir+PyV5bbnD3X5Ihutcm1lukhjPeqoch81sqp90MtBbp4uKX/9wQ9+kI488shURR3VUbU+OVAerZNH4zWC/WupSr/853/+Z/rNb35TnKKfP0zn9y6/+tWvittlnWbsw9ZSlT7p6I8fjWL/Wqryel+VdtajlioeK3mAUA5zqz5K+mB1VOnxl8+KyFNd5M/F+f1KPoMo/yEqXzizajqrpUr9kuVBcz/5yU/SK6+8UvwhN09HUsXP+BEa5xW3AVxxxRVp6dKlxXy4+YDMV30/66yzitEg+S9E+TSe/BekPIduvn3uueemsspz/uSD8PLLL3/Pthwc7tmzp/iaXwzy7TLPm9VRLQfrs9a/5JVF/pCQr7x7++23F//fecm381xMeVuV+qSzWqrSJ63y3FJ5FHf+//6Xf/mXYtqLfBXf1g/dub633367WPLtvK5KdfTp06f0z18He/znP3hMnTo1zZs3rxhZnAOQ/Nja/81rmfrow9ZRxj7q6Dmps//zfL+8Lv/c/r+narUcf/zxxYiR/ByWR4y88MILRb+VsV9ym/M0F/k5IE+flKdNOlCZ+uXD1lGlPsl/vM2hej6bKK/P72P+5m/+phg5WcY+6UotZeuXg9WR51/Op+fnPwrmJbc3f8jOtz/60Y9Wqk86q6VsfdJRLfk179/+7d+Kdubn4Ry453myv/jFL5bytb4rtZTt9f5gdRxKO6tyrHRWS5WOlVZ5isQ8COXiiy9+z8+W6Vj5sHWU7TjpqJZPfvKTxWfcPL1V3pan5stneOXR32Xsk67UUqV+yfIZxHmQVs4jch0//vGP01e/+tXSPod1q265vCLvK19R9LrrrqsdffTRxXL++efXXnzxxWLbrl27iqt1Dho0qPbRj360NnPmzNqOHTtqZfW1r32tdsYZZxz06qT5obf/kq86WsVaOuqzslm/fn1t8uTJtaOOOqo2ePDg2p/+6Z/WfvGLX1SyTzqqpUp9kt1www1FHX379q2dfvrptVWrVrVty8f8gf3yflftLXsdZX/+6ujxv3379tpFF11U69+/f+2YY46p3Xzzze1+tkx91JU6ytZHHdXS2f95vt+B2/Pvq2ItL7/8cnE179xvI0aMqH3961+v7d27t3S1/PjHPy5uf+QjH6n169evbVm0aFEp+6UrdVSlTzZt2lT77Gc/WxzT+Wr2J598cnEV+7fffruUfdLVWsrUL4f6nuquu+6qnXbaae3WVaVPDqWWMvVJR7Vs3bq19pnPfKZ4bOVl7NixteXLl5f2tb6rtZTp9b6jx1dn7azSsdJZLVU5VlpdcMEFtRkzZrzvz5bpWOlKHWU6TjqrJX/mmjhxYtHW/FnsnHPOqT377LOl7JOu1lKlfrn00kuLdub3kWeffXbtV7/6VbufLdtzWHdqyv90bywOAAAAAEBPYfoOAAAAAADCCKUBAAAAAAgjlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAIIxQGgAAAACAMEJpAAAAAADCCKUBAAAAAAgjlAYAAAAAIEX5f3Ppm7nAApLLAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 19
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "# 评分的直方图",
   "id": "77ac5d8bc303b062"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-06T07:28:27.449104Z",
     "start_time": "2025-03-06T07:28:27.241064Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "file_path = './IMDB-Movie-Data.csv'\n",
    "df = pd.read_csv(file_path)\n",
    "\n",
    "#打印数据信息\n",
    "# print(df)\n",
    "print(df.info())\n",
    "print('*' * 100)\n",
    "print(df.head(1))\n",
    "print('*' * 100)\n",
    "\n",
    "#获取平均评分\n",
    "print(df[\"Rating\"].mean())\n",
    "print('*' * 100)\n",
    "\n",
    "#导演的人数\n",
    "# print(df[\"Director\"].tolist())\n",
    "print(len(df[\"Director\"].tolist()))\n",
    "print('*' * 100)\n",
    "# print(df[\"Director\"].unique())\n",
    "print(len(df[\"Director\"].unique())) #去重后的导演人数\n",
    "print('*' * 100)\n",
    "\n",
    "'''获取演员的人数'''\n",
    "\n",
    "# temp_actors_list = df[\"Actors\"]\n",
    "# print(temp_actors_list.head())\n",
    "temp_actors_list = df[\"Actors\"].str.split(',').tolist()\n",
    "# print(temp_actors_list)\n",
    "actors_list = [i for j in temp_actors_list for i in j]\n",
    "# print(actors_list)\n",
    "actors_num = len(actors_list)\n",
    "print(actors_num)\n",
    "print('*' * 100)\n",
    "\n",
    "'''\n",
    "rating,runtime分布情况\n",
    "选择图形，直方图\n",
    "准备数据\n",
    "'''\n",
    "\n",
    "runtime_data = df[\"Rating\"].values\n",
    "# print(runtime_data)\n",
    "max_runtime = runtime_data.max()\n",
    "min_runtime = runtime_data.min()\n",
    "# print(max_runtime)\n",
    "# print(min_runtime)\n",
    "\n",
    "'''计算组数'''\n",
    "\n",
    "print(max_runtime - min_runtime)\n",
    "print('*' * 100)\n",
    "num_bin = (max_runtime - min_runtime) // 0.5\n",
    "\n",
    "'''设置图形的大小'''\n",
    "\n",
    "plt.figure(figsize = (20,8),dpi = 90)\n",
    "#第二个bin参数必须为int或sequence或str，bins代表划分为几个单元\n",
    "plt.hist(runtime_data, bins = int(num_bin))\n",
    "\n",
    "_x = [min_runtime]\n",
    "i = min_runtime\n",
    "while i <= max_runtime + 0.5:\n",
    "    i += 0.5\n",
    "    _x.append(i)\n",
    "    \n",
    "plt.xticks(_x)\n",
    "\n",
    "plt.show()"
   ],
   "id": "d2a7163abf4eb126",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1000 entries, 0 to 999\n",
      "Data columns (total 12 columns):\n",
      " #   Column              Non-Null Count  Dtype  \n",
      "---  ------              --------------  -----  \n",
      " 0   Rank                1000 non-null   int64  \n",
      " 1   Title               1000 non-null   object \n",
      " 2   Genre               1000 non-null   object \n",
      " 3   Description         1000 non-null   object \n",
      " 4   Director            1000 non-null   object \n",
      " 5   Actors              1000 non-null   object \n",
      " 6   Year                1000 non-null   int64  \n",
      " 7   Runtime (Minutes)   1000 non-null   int64  \n",
      " 8   Rating              1000 non-null   float64\n",
      " 9   Votes               1000 non-null   int64  \n",
      " 10  Revenue (Millions)  872 non-null    float64\n",
      " 11  Metascore           936 non-null    float64\n",
      "dtypes: float64(3), int64(4), object(5)\n",
      "memory usage: 93.9+ KB\n",
      "None\n",
      "****************************************************************************************************\n",
      "   Rank                    Title                    Genre  \\\n",
      "0     1  Guardians of the Galaxy  Action,Adventure,Sci-Fi   \n",
      "\n",
      "                                         Description    Director  \\\n",
      "0  A group of intergalactic criminals are forced ...  James Gunn   \n",
      "\n",
      "                                              Actors  Year  Runtime (Minutes)  \\\n",
      "0  Chris Pratt, Vin Diesel, Bradley Cooper, Zoe S...  2014                121   \n",
      "\n",
      "   Rating   Votes  Revenue (Millions)  Metascore  \n",
      "0     8.1  757074              333.13       76.0  \n",
      "****************************************************************************************************\n",
      "6.723199999999999\n",
      "****************************************************************************************************\n",
      "1000\n",
      "****************************************************************************************************\n",
      "644\n",
      "****************************************************************************************************\n",
      "3999\n",
      "****************************************************************************************************\n",
      "7.1\n",
      "****************************************************************************************************\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1800x720 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 20
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "# 统计电影题材信息",
   "id": "eb381679155586fa"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-06T08:07:10.093576Z",
     "start_time": "2025-03-06T08:07:09.423701Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "file_path = './IMDB-Movie-Data.csv'\n",
    "df = pd.read_csv(file_path)\n",
    "\n",
    "print(df[\"Genre\"].head(3))\n",
    "print('*' * 100)\n",
    "\n",
    "#统计分类的列表\n",
    "temp_list = df[\"Genre\"].str.split(',').tolist()\n",
    "# print(temp_list)   \n",
    "genre_list = list(set([i for j in temp_list for i in j ])) #集合去重\n",
    "# print(genre_list)\n",
    "\n",
    "#构建全为0的数组\n",
    "zeros_df = pd.DataFrame(np.zeros((df.shape[0],len(genre_list))), columns = genre_list)\n",
    "# print(df.shape[0]) #行数量\n",
    "print(zeros_df)\n",
    "print('*' * 100)\n",
    "\n",
    "#给每个电影出现的位置赋值1\n",
    "for i in range(df.shape[0]):\n",
    "    zeros_df.loc[i,temp_list[i]] = 1\n",
    "# print(zeros_df)\n",
    "\n",
    "'''统计每个分类的电影的数量和，genre_count是什么类型？'''\n",
    "\n",
    "genre_count = zeros_df.sum(axis=0)\n",
    "print(genre_count)\n",
    "print('*' * 100)\n",
    "\n",
    "'''排序'''\n",
    "\n",
    "genre_count = genre_count.sort_values()\n",
    "# print(genre_count)\n",
    "_x = genre_count.index\n",
    "_y = genre_count.values\n",
    "\n",
    "'''画图'''\n",
    "plt.figure(figsize = (20,8),dpi = 90)\n",
    "plt.bar(range(len(_x)),_y,width = 0.4,color = 'orange')\n",
    "plt.xticks(range(len(_x)),_x)\n",
    "\n",
    "plt.show()"
   ],
   "id": "f435bbc1114ce14a",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0     Action,Adventure,Sci-Fi\n",
      "1    Adventure,Mystery,Sci-Fi\n",
      "2             Horror,Thriller\n",
      "Name: Genre, dtype: object\n",
      "****************************************************************************************************\n",
      "     Musical  Animation  Sport  Adventure  Sci-Fi  Drama  Action  Romance  \\\n",
      "0        0.0        0.0    0.0        0.0     0.0    0.0     0.0      0.0   \n",
      "1        0.0        0.0    0.0        0.0     0.0    0.0     0.0      0.0   \n",
      "2        0.0        0.0    0.0        0.0     0.0    0.0     0.0      0.0   \n",
      "3        0.0        0.0    0.0        0.0     0.0    0.0     0.0      0.0   \n",
      "4        0.0        0.0    0.0        0.0     0.0    0.0     0.0      0.0   \n",
      "..       ...        ...    ...        ...     ...    ...     ...      ...   \n",
      "995      0.0        0.0    0.0        0.0     0.0    0.0     0.0      0.0   \n",
      "996      0.0        0.0    0.0        0.0     0.0    0.0     0.0      0.0   \n",
      "997      0.0        0.0    0.0        0.0     0.0    0.0     0.0      0.0   \n",
      "998      0.0        0.0    0.0        0.0     0.0    0.0     0.0      0.0   \n",
      "999      0.0        0.0    0.0        0.0     0.0    0.0     0.0      0.0   \n",
      "\n",
      "     Horror  Crime  Fantasy  Music  Comedy  Western  Thriller  Biography  War  \\\n",
      "0       0.0    0.0      0.0    0.0     0.0      0.0       0.0        0.0  0.0   \n",
      "1       0.0    0.0      0.0    0.0     0.0      0.0       0.0        0.0  0.0   \n",
      "2       0.0    0.0      0.0    0.0     0.0      0.0       0.0        0.0  0.0   \n",
      "3       0.0    0.0      0.0    0.0     0.0      0.0       0.0        0.0  0.0   \n",
      "4       0.0    0.0      0.0    0.0     0.0      0.0       0.0        0.0  0.0   \n",
      "..      ...    ...      ...    ...     ...      ...       ...        ...  ...   \n",
      "995     0.0    0.0      0.0    0.0     0.0      0.0       0.0        0.0  0.0   \n",
      "996     0.0    0.0      0.0    0.0     0.0      0.0       0.0        0.0  0.0   \n",
      "997     0.0    0.0      0.0    0.0     0.0      0.0       0.0        0.0  0.0   \n",
      "998     0.0    0.0      0.0    0.0     0.0      0.0       0.0        0.0  0.0   \n",
      "999     0.0    0.0      0.0    0.0     0.0      0.0       0.0        0.0  0.0   \n",
      "\n",
      "     Mystery  Family  History  \n",
      "0        0.0     0.0      0.0  \n",
      "1        0.0     0.0      0.0  \n",
      "2        0.0     0.0      0.0  \n",
      "3        0.0     0.0      0.0  \n",
      "4        0.0     0.0      0.0  \n",
      "..       ...     ...      ...  \n",
      "995      0.0     0.0      0.0  \n",
      "996      0.0     0.0      0.0  \n",
      "997      0.0     0.0      0.0  \n",
      "998      0.0     0.0      0.0  \n",
      "999      0.0     0.0      0.0  \n",
      "\n",
      "[1000 rows x 20 columns]\n",
      "****************************************************************************************************\n",
      "Musical        5.0\n",
      "Animation     49.0\n",
      "Sport         18.0\n",
      "Adventure    259.0\n",
      "Sci-Fi       120.0\n",
      "Drama        513.0\n",
      "Action       303.0\n",
      "Romance      141.0\n",
      "Horror       119.0\n",
      "Crime        150.0\n",
      "Fantasy      101.0\n",
      "Music         16.0\n",
      "Comedy       279.0\n",
      "Western        7.0\n",
      "Thriller     195.0\n",
      "Biography     81.0\n",
      "War           13.0\n",
      "Mystery      106.0\n",
      "Family        51.0\n",
      "History       29.0\n",
      "dtype: float64\n",
      "****************************************************************************************************\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1800x720 with 1 Axes>"
      ],
      "image/png": "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vpor+9cxxxzT9F3y2fliPeU6nrI/Z/t/6EMfatr/9A0G2/fbK9FTF/O65AZtztJ9nvba1762qW/pG6eML7jggqbfkPJIH6nNmGpnbZNOh3H1sIc9rPOWt7yl85znPKfzrne9q/nb85///M4b3/jGznOf+9zOS17yks5Xv/rVzpw5c7Z43+GHH9456aSTmt9f85rXdJ74xCd2/vjHP3Y2b97c+eEPf9j5wx/+sMXnx+WXX96ZPXt25x3veEfnT3/6U/P6b3zjG820DRs2dM4555zOdddd10x78Ytf3Nl///07N998czM988o8R9OTn/zkzqte9arm9/e85z2dRYsWdb7+9a93DjnkkOZvF110UWeHHXbo/Pa3v+3ssccenY985CPN+v3oRz/q7LPPPp1zzz23ed1DHvKQzooVKzp/+ctfOjfccEPzGa1U8ZRHK+u87777NmXy5z//ufOrX/2qc4973KPzvve9r5n+/ve/v7Pjjjt2Xv/61zfT8/qs+0477dQ//w9+8IOdmTNndjZu3NgZL8Mtu1/+8pc9t2vWN+t90003Nes7EU2U/WS8ZbsdcMABnUc96lFNfcz27Za6fcc73rHzk5/8pFnuhQsXdh7xiEc007J9895XvvKVzXpdeOGFzX704Q9/eKt1f7Ayral7u3Rr9+vudukLX/hCZ968eZ3f/OY3zf+zb69du3ar7dfrXve6zj3vec/mdZs2beocccQRnUc/+tFbzCNtSz4v7crVV1/dueUtb9n5+c9/3v+aww47rKmD2+PBD35w52Uve1mzDLvttlvnE5/4RP/2mDFjRudNb3pT58Ybb2y2Rf5/2WWXDbpOWd5DDz20qdNZ5r322qtz0EEHdc4777xm2x911FGdJz3pSf2v//jHP95Zt25dU6e+8pWvNOt2/vnnN9N+8YtfNJ93zTXX9L9+YF04+uijm7qVcrnqqquabXXMMcds8f7sr2knszzZNlmnsagTw1mXI488smkHL7744s7OO+/ceehDH9r58Y9/3GzblNvSpUsHPW50l3OOPWn7s61a2ac++tGPjup65Vj2qU99qpnX73//+xGV/fr165vXrlq1qtnun/3sZzu3uMUtmnayuzye8pSnNNu3bfM/9KEPNfNK23j22Wc372nreuaf40nqUF6f9iXb8wMf+MCw6urTn/70/nY4Vq9e3bn73e++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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 34
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": "",
   "id": "2aaf801060a03777"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
